In order to make the storage and retrieval of data faster and more efficient, data may be stored in an organized form in a data repository such as a database. Data stored in an organized form often conforms to a “schema” that indicates the structure of the data. For example, given a plurality of entities represented by data stored in a database, a database schema may indicate a separate table for each entity type, a separate table column for each attribute of a particular entity type, and a data type (e.g., number, string, etc.) for each table column.
Sometimes, it is desirable to take data that conforms in structure to one schema and modify that data so that the data conforms in structure to another, different schema instead. For example, a database administrator may wish to export data that is stored in a source database and import that data into another, different, target database. The target database server might be a newer version of the source database server, produced by the same database software vendor. Alternatively, the source database server and the target database server might be produced by entirely different database software vendors. For another example, when a new version of an application is installed, the application installation program might need to modify existing data produced by an old version of the application so that the data conforms to a new schema used by the new version of the application.
In such cases, the schema used by the source database or application may differ from the schema used by the target database or application. For example, data types supported by the source database might differ from data types supported by the target database. To facilitate data conversion, data types of table columns might need to be altered. Table columns might need to be split or merged. The format of data within a particular table column might need to be altered. Such data conversion is referred to as “data migration.”
According to a “manual migration” approach, a database administrator obtains data contained in a source database by manually constructing and executing Structured Query Language (SQL) “select” statements. Once the database administrator has obtained the data from the source database, the database administrator inputs the data into a custom-made conversion program. The custom-made conversion program is specifically designed to take data that conforms to the source schema and alter the data so that the data conforms to the target schema. After the custom-made conversion program has produced the altered data, the database administrator loads the altered data into the target database by manually constructing and executing SQL “insert” statements.
Because of its ad-hoc, manual, and customized nature, the “manual migration” approach often consumes a large amount of a database administrator's time. However, because source databases and target databases often use different formats to store data, and because it is not usually within the business interests of database software vendors to provide utilities that will convert data into a format used by a rival database software vendor, few other options exist for migrating data between databases that use different formats to store data.